﻿using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using ConnectionBase;
using CoreEveprod;

namespace EveProd
{
	public partial class FormUpdateBase : Form
	{
		private DataClassesEveProdDataContext _dataContextBase = new DataClassesEveProdDataContext();

		public FormUpdateBase()
		{
			InitializeComponent();
		}

		private void FormUpdateBase_Load(object sender, EventArgs e)
		{
			buttonUpdate.Enabled = false;

			// Nous mettons à jour le label "labelBaseActuelle" qui prend les infos de la base
			var dernierUpdate = (from gg in _dataContextBase.UpdateBase
			                     select gg.LastUpdate).First();

			labelBaseActuelle.Text = dernierUpdate.ToString();
		}

		#region Event du bgwImage
		private void bgwImage_DoWork(object sender, DoWorkEventArgs e)
		{
			// Je lance la méthode pour faire la mise à jour.
			UpdateBaseMetrics baseMetrics = new UpdateBaseMetrics(textBoxCheminCsv.Text);
			baseMetrics.MiseJour();
		}

		private void bgwImage_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
		{
			DialogResult = MessageBox.Show("Mise à jour terminé.\n Voulez vous supprimer le fichier ?", "Terminé", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
			
			// Si c'est YES, je dois supprimer le fichier.
			if(DialogResult.Yes == DialogResult)
			{
				File.Delete(textBoxCheminCsv.Text);
			}
			
		} 
		#endregion

		/// <summary>
		/// 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void buttonUpdate_Click(object sender, EventArgs e)
		{
			buttonUpdate.Enabled = false;
			buttonOuvrirCsv.Enabled = false;
			buttonAnnuler.Enabled = false;

			// Lancement dans un tâche de fond.
			bgwUpdateCsv.RunWorkerAsync();

		}

		/// <summary>
		/// Bouton pour fermer la fenêtre, annuler.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void buttonAnnuler_Click(object sender, EventArgs e)
		{
			Close();
		}

		/// <summary>
		/// Bouton pour ouvrir un fichier csv venant du site Eve Metrics.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void buttonOuvrirCsv_Click(object sender, EventArgs e)
		{
			openFileDialogCsv.ShowDialog();
		}
		void openFileDialogCsv_FileOk(object sender, CancelEventArgs e)
		{
			textBoxCheminCsv.Text = openFileDialogCsv.FileName;
			buttonUpdate.Enabled = true;
		} 

	}
}
